超全!!snowboy语音唤醒(树莓派4b)

您所在的位置:网站首页 树莓派 4B开发板 超全!!snowboy语音唤醒(树莓派4b)

超全!!snowboy语音唤醒(树莓派4b)

2024-07-01 13:42| 来源: 网络整理| 查看: 265

序言

时间 2024/3/18

硬件:树莓派4b

系统:rpi-aarch64

前情概要:我们在做一个基于树莓派接入chat的桌宠机器人(卓越小子),为了能和机器人对话,并把内容送给chat,我们需要一个唤醒词例如“小爱同学” 、“siri“这样子的模型,于是我们找到了snowboy这个模型。

环境安装

Snowboy在树莓派4B上没有现成的编译好的binary,因此根据源码自己编译。我选用的是python,因为我们还有一个opencv的项目,树莓派上已经有了python的环境,如有需要可以自己安装。

1.下载snowboy代码

(两者都可以,但是必须要拖到树莓派下解压,在pc解压后拖过去会报错,因为编译环境不同)

链接:https://pan.baidu.com/s/15fu6r5DNH_jwF1nkOw9sQA?pwd=1234 提取码:1234 --来自百度网盘超级会员V3的分享 git clone https://github.com/Kitt-AI/snowboy.git

解压命令 

unzip snowboy-master.zip 2.安装依赖

2.1  安装 pulseaudio 软件,减少音频配置的步骤:

sudo apt-get install pulseaudio

   2.2  安装 sox 软件测试录音与播放功能,安装完成后运行 sox -d -d 命令,对着麦克风说话,确认可以听到自己的声音。

sudo apt-get install sox

 2.3 安装 SWIG(>3.0.10)

sudo apt-get install swig

2.4 安装 ATLAS:

sudo apt-get install libatlas-base-dev

2.5安装对应库(是python就把python3改成python)

sudo apt-get install python3-pyaudio 运行

进入python目录下

cd snowboy/swig/Python3

使用make命令进行编译,如果出现问题转常见问题1

进入官方示例目录 snowboy/examples/Python 并运行以下命令:

python3 demo.py resources/models/snowboy.umdl

出现问题转常见问题2

 这个时候喊出”snowboy“,就能唤醒了,同时有滴的声音(我们为了方便,直接连的蓝牙音箱播放声音)

自定义唤醒词

        因为官网在2020年已经关闭,我们可以进入这个网页进行录制。

        Snowboy Personal Wake Word

        录制3 个wav 格式的的音频文件,内容即为你的唤醒词,最好使用你要运行唤醒功能的机器录制,录音参数最好设置和程序中的一样,通过查阅程序,我得到的参数为:

采样深度为16位即2个字节、声道数为1、采样率为16K、

         1.1

        按蓝色按钮,会弹出是否允许使用麦克风,确认就可以了,然后根据提示录音就可以了,录制完三个之后,点击绿色按钮生成模型,”save and download“,这个时候把这个文件(我们这里是zyxz.pmdl)放入新建目录下

  同时需要放入的还有

1、下载好的 nihaoxiaobai.pmdl 模型文件 2、snowboy/swig/Python3 目录下编译好的 _snowboydetect.so 库 3、snowboy/examples/Python3 目录下的 demo.py、snowboydecoder.py、snowboydetect.py 文件以及 resources 目录

 遇到问题跳转至常见问题三

         在新建目录下执行

python3 demo.py zyxz.pmdl

         成功后就可以唤醒了

 这样我们就成功的修改了唤醒词,如果不成功多试几次,或者是在录制音频训练的时候没有录上

遇到的常见问题 问题一:描述 在进入目录下进行make操作但是失败,

返回错误1,通过查阅资料,

 …/…/lib/ubuntu64/libsnowboy-detect.a:error adding symbols: File in wrong format

在snowboy/lib下一共有

aarch64-ubuntu1604/    --对应arm64 ubuntu1604,经验证ubuntu1804也可以使用 android/                         --对应android系统 ios/                                 --对应ios系统 node/ osx/                                 --对应macos rpi/                                   --对应树莓派32位arm ubuntu64/                        --对应PC Ubuntu64

uname -r

 通过这个命令查看版本,对应上面的进行修改,nano Makefile 进入文件

在这个地方添加这样一段话(我这里是rpi版本)

ifneq (,$(findstring aarch64,$(shell uname -m))) SNOWBOYDETECTLIBFILE = $(TOPDIR)/lib/rpi/libsnowboy-detect.a endif 或者前面全部注释,用下面这句 SNOWBOYDETECTLIBFILE = $(TOPDIR)/lib/rpi/libsnowboy-detect.a

保存退出后应该就可以了,如果还不行可以尝试别的版本(我们一开始查出来是arrch64,但是使用arrch64版本不行,换成了rpi就可以了很奇怪)

问题二:进入python目录下执行唤醒失败(我没遇到)

我们打开snowboydecoder.py 文件,将第 5 行代码 from * import snowboydetect 改为 import snowboydetect 即可直接运行。 

然后就可以了

问题三:测试如果出现jack server is not running or cannot be started

Cannot connect to server socket err = No such file or directory Cannot connect to server request channel jack server is not running or cannot be started 请安装jackd2

apt-get install -y jackd2

# pulseaudio --kill关闭 --start启动 jack_control start #启动 status查看状态 exit退出 安装jackd2后重启一下,否则可能出现--问题

Cannot lock down 82274202 byte memory area (Cannot allocate memory)

问题四:在修改唤醒词把文件转移到新文件下,snowboydetect.py 文件以及 resources 目录是红色,不能正常使用。

(如图)我们通过ls-l指令,进行查看文件,发现这两个文件只是软链接(相当于快捷方式)复制过来了,我们需要去根据提示,在snowboy/swig/Python/snowboydetect.py和snowboy/resources这两个目录下复制过来

cp snowboydectect.py ~/Desktop/zyxz/#复制过来

 然后就可以了

参考资料:树莓派学习之旅(3)— 使用 snowboy 做语音唤醒功能_snowboy gitee-CSDN博客

树莓派4B编译安装snowboy_libsnowboy-detect.a: error adding symbols: file in-CSDN博客

关于树莓派编译及运行Snowboy的详细教程。_snowboy官网-CSDN博客



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3